﻿using System.ServiceModel;
using Fluent.Domain;
using Salient.ServiceModel;

namespace FluentWcfServiceLibrary
{
    /// <summary>
    /// A simple test of each mapping and wcf cyclic serialization.
    /// Be aware and careful that the maps are configured eager loaded to eliminate proxy wrapping
    /// that would introduce another problem to solve on the way to proving the dto/map generation. 
    /// 
    /// You will be pulling full, unconstrained object graphs over the wire. 
    /// </summary>
    [ServiceContract]
    public interface IService1
    {
        [OperationContract, PreserveReferences]
        Orders GetOrder(int id);

        [OperationContract, PreserveReferences]
        Categories GetCategories(int id);

        [OperationContract, PreserveReferences]
        Customers GetCustomers(string id);

        [OperationContract, PreserveReferences]
        Shippers GetShippers(int id);

        [OperationContract, PreserveReferences]
        Suppliers GetSuppliers(int id);

        [OperationContract, PreserveReferences]
        Products GetProducts(int id);

        [OperationContract, PreserveReferences]
        Order_Details GetOrder_Details(int orderId, int productId);

        [OperationContract, PreserveReferences]
        CustomerCustomerDemo GetCustomerCustomerDemo(string customerId, string customerTypeId);

        [OperationContract, PreserveReferences]
        CustomerDemographics GetCustomerDemographics(string customerTypeId);

        [OperationContract, PreserveReferences]
        Region GetRegion(int id);

        [OperationContract, PreserveReferences]
        Territories GetTerritories(string id);

        [OperationContract, PreserveReferences]
        EmployeeTerritories GetEmployeeTerritories(int employeeId, string territoryId);

        [OperationContract, PreserveReferences]
        Employees GetEmployees(int id);
    }
}